#ifndef VIEW_HPP
#define VIEW_HPP

#include <QMainWindow>

#include "DrawingArea.hpp"
#include "Observer.hpp"
#include "Model.hpp"
#include "AttributesDialog.hpp"
class DrawingArea;

namespace Ui {
    class View;
}

class View : public QMainWindow, public Observer
{
    Q_OBJECT

public:
    explicit View(QWidget *parent = 0);
    ~View();

    virtual void notifyChanges();
    void paintEvent(QPaintEvent* event);


private:
    Ui::View *_ui;

    DrawingArea* _drawingArea;
    Model* _model;

private slots:
    void on_actionDelete_triggered();
    void on_sequentialEnablingInfoButton_clicked();
    void on_suspendResumeButton_clicked();
    void on_disablingButton_clicked();
    void on_synchronizationButton_clicked();
    void on_interleavingButton_clicked();
    void on_orderIndependanceButton_clicked();
    void on_choiceButton_clicked();
    void on_sequenceButton_clicked();
    void on_optionalButton_clicked();
    void on_iterativeButton_clicked();
    void on_actionAddSibling_triggered();
    void on_actionAddChild_triggered();
    void on_redrawAction_triggered();
    void on_newNameEdit_textChanged(QString );
    void on_interactionButton_clicked();
    void on_applicationButton_clicked();
    void on_userButton_clicked();
    void on_abstractButton_clicked();
    void on_actionAttributes_triggered();
    void on_ZoomSlider_valueChanged(int value);
    void on_actionExit_triggered();
    void on_actionSave_triggered();
    void on_actionOpen_triggered();
    void on_actionNew_triggered();
    void on_actionUndo_triggered();
};

#endif // VIEW_HPP
